// do-while循环实现图书续借流程（至少执行一次）
object DoWhileDemo extends App {
  // 续借规则：最多续借2次
  val maxRenewals = 2
  var renewCount = 0  // 当前续借次数
  var wantToRenew = false  // 用户是否想续借

  // do-while循环：先执行续借询问，再判断是否继续（至少执行一次）
  do {
    // 模拟询问用户：第一次默认续借，第二次随机决定（实际场景为控制台输入）
    wantToRenew = if (renewCount == 0) true else scala.util.Random.nextBoolean()

    if (wantToRenew && renewCount < maxRenewals) {
      renewCount += 1  // 续借次数+1
      println(s"续借成功! 当前续借次数: $renewCount / $maxRenewals")
    } else if (renewCount >= maxRenewals) {
      println(s"已达到最大续借次数($maxRenewals次), 无法继续续借")
      wantToRenew = false  // 修改条件，退出循环
    } else {
      println("用户选择不续借")
    }
  } while (wantToRenew && renewCount < maxRenewals)  // 条件满足则继续循环

  // 输出最终结果
  println(s"\n续借流程结束, 共续借 $renewCount 次")

  // 【对比练习：while循环版本（可能一次不执行）】
  println("\n=== while循环续借对比 ===")
  val maxRenewals2 = 2
  var renewCount2 = 0
  var wantToRenew2 = false  // 初始条件为false，循环体一次不执行

  while (wantToRenew2 && renewCount2 < maxRenewals2) {
    renewCount2 += 1
    println(s"while版本续借成功! 当前续借次数: $renewCount2")
    wantToRenew2 = renewCount2 < 1  // 仅允许续借1次
  }
  println(s"while版本续借次数: $renewCount2")  // 输出0，因初始条件不满足
}
